/**
    @author: ChenLin
    @date: 2022/11/11 todo 视频压缩工具类
**/

package handler

import (
	"strconv"
)

/**
 * @Author ChenLin
 * @Description //TODO 命令行运行ffmpeg压缩视频
 * @Date 9:44 2022/11/14
 **/

func FfmpegCompressVideoMedium(fileUrl string, crf int, videoUrl string) error {
	/*
		ffmpeg -i /home/chenlin/d0e4ad395784372b8d7fac4fc320236b.mp4 -c:v libx264
		-preset slower -crf 28 -c:a copy /home/chenlin/compress_28.mp4
	*/
	var arg []string
	arg = append(arg, "-i", fileUrl, //需要压缩的视频路径
		"-c:v", "libx264", //解码库
		"-preset", "medium", //解码速度
		"-crf", strconv.Itoa(crf), //解码质量,最好保持在18-28之间
		"-c:a", "copy", //音频不处理直接copy
		videoUrl) //视频输出路径
	err := RunFfmpegCmd(arg...)
	if err != nil {
		return err
	}
	return nil
}

func FfmpegCompressVideoFast(fileUrl string, crf int, videoUrl string) error {
	/*
		ffmpeg -i /home/chenlin/d0e4ad395784372b8d7fac4fc320236b.mp4 -c:v libx264
		-preset slower -crf 28 -c:a copy /home/chenlin/compress_28.mp4
	*/
	var arg []string
	arg = append(arg, "-i", fileUrl, //需要压缩的视频路径
		"-c:v", "libx264", //解码库
		"-threads", "5", //开启多线程
		"-preset", "fast", //解码速度
		"-crf", strconv.Itoa(crf), //解码质量,最好保持在18-28之间
		"-c:a", "copy", //音频不处理直接copy
		videoUrl) //视频输出路径
	err := RunFfmpegCmd(arg...)
	if err != nil {
		return err
	}
	return nil
}
